package logging

import (
	"os"

	"github.com/sirupsen/logrus"
)

// Logger 包装了 logrus.Logger
type Logger struct {
	*logrus.Logger
}

// NewLogger 创建新的日志记录器
func NewLogger() (*Logger, error) {
	logger := logrus.New()
	logger.Formatter = &logrus.JSONFormatter{}

	// 创建日志文件
	logFile, err := os.OpenFile(".gsws.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
	if err != nil {
		// 如果无法创建日志文件，使用标准错误输出
		logger.Printf("Failed to log to file, using default stderr: %v", err)
	} else {
		logger.Out = logFile
	}

	return &Logger{Logger: logger}, nil
}

// NewLoggerWithFile 使用指定文件创建日志记录器
func NewLoggerWithFile(filename string) (*Logger, error) {
	logger := logrus.New()
	logger.Formatter = &logrus.JSONFormatter{}

	// 创建日志文件
	logFile, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
	if err != nil {
		return nil, err
	}

	logger.Out = logFile

	return &Logger{Logger: logger}, nil
}

// Close 关闭日志记录器
func (l *Logger) Close() error {
	// logrus 会自动处理文件关闭，这里可以添加其他清理逻辑
	return nil
}